package com.czc.util;


import com.czc.constant.CrowdConstant;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class CrowdUtil {

    /*
        对明文字符串进行md5加密
        source传入的是明文字符串
        return返回的是加密结果
     */
    public static String md5(String source){

        //1.判断source是否有效
        if(source==null||source.length()==0){
            //2.如果不是有效的字符串抛出异常
            throw new RuntimeException(CrowdConstant.MESSAGE_STRING_INVALIDATE);
        }

        try {
            //3.获取MessageDigest对象
            String algorithm="md5";
            MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
            // 4.获取明文字符串对应的字节数组
            byte[] input = source.getBytes();

            // 5.执行加密
            byte[] output = messageDigest.digest(input);

            //6.创建BigInteger对象
            int signum=1;//0是表示负数,1表示正数
            BigInteger bigInteger=new BigInteger(signum,output);

            // 7.按照16进制将bigInteger的值转换为字符串
            int radix=16;
            String encoded = bigInteger.toString(radix);

            return encoded;


        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }

    //判断请求类型是普通请求还是 ajax请求
    public static boolean judgeRequestType(HttpServletRequest request){


        //获取请求头
        String acceptHeader = request.getHeader("Accept");
        String xRequestHeader = request.getHeader("X-Requested-With");

        //判断
        if(
                acceptHeader!=null && acceptHeader.contains("application/json")
                || (xRequestHeader!=null && xRequestHeader.equals("XMLHttpRequest"))
        ){
            return true;
        }

        return false;

    }
}
